package QuickHit2;

import java.util.Random;

import javax.sound.midi.Instrument;

//游戏类
public class Game {

	private Player player;

	public Player getPlayer() {
		return player;
	}

	public void setPlayer(Player player) {
		this.player = player;
	}

	public Game(Player player) {
		super();
		this.player = player;
	}

	public Game() {
		super();
	}
	
	
	//功能一：生成随机字符串
	public String genRandStr() {
		//先获取玩家当前的级别
		int levelNo = player.getLevelNo();
		//生成随机数
		Random random=new Random();
		//快速拼接字符串---stringBuffer
		StringBuffer buffer = new StringBuffer();
		//获取当前级别的level对象
		Level level=LeveParam.LEVELS[levelNo-1];
		//随机字符串的长度对应level里的strLength属性
		//利用循环生成随机数
		for(int i=0;i<level.getStrLength();i++) {
			/*
			 * 生成的随机数的范围是左开右闭区间
			 */
			int r=random.nextInt(level.getStrLength());
			switch (r) {
			case 0:
				/*
				 * 根据随机生成的随机数
				 * 向buffer里追加拼接一个字符
				 */
				buffer.append("a");
				break;
			case 1:
				buffer.append("b");
				break;
			case 2:
				buffer.append("c");
				break;
			case 3:
				buffer.append("d");
				break;
			case 4:
				buffer.append("e");
				break;
			case 5:
				buffer.append("f");
				break;
			default:
				buffer.append("g");
				break;
			}
		}
		//返回生成的字符串
		return buffer.toString();
	}
	
	//功能二：比较玩家输入的匹配情况，并予以显示
	public void showResult(String randStr,String input) {
		if(randStr.equals(input)) {
			//输入正确后判断输入所用时间是否超过限制时间
			//计算玩家输入所用时间=结束时的时间-开始输入的时间
			int elapsedTime=(int) ((System.currentTimeMillis()-player.getStartTime())/1000);
			//获取用户等级
			int levelNo=player.getLevelNo();
			//获取用户等级所对应的时间限制
			Level level=LeveParam.LEVELS[levelNo-1];
			//比较用户所用时间与规定的限制时间
			if(elapsedTime>level.getTimeLimit()) {
				System.out.println("输入超时，程序结束！");
				System.exit(1);
			}else {
				//为用于本次游戏所用时间赋值
				player.setElapsedTime(elapsedTime);
				//用户游戏之前的积分
				int curScore=player.getCurScore();
				//计算游戏所增加的积分
				int perScore=level.getPerScore();
				//计算用户的最新分值
				curScore=curScore+perScore;
				player.setCurScore(curScore);
				System.out.println("玩家"+player.getName()+"的等级："+levelNo+"，积分："+player.getCurScore()+"，本次游戏所用时间："+player.getElapsedTime());
				//判断如果用户通关达到最高等级，予以提示
				if(player.getLevelNo()==6) {
					//计算出最高分值=每次得分X输入的次数
					int maxScore=level.getPerScore()*level.getStrTimes();
					if(player.getCurScore()==maxScore) {
						System.out.println("恭喜您成功通关，已经达到登峰造极的境界！");
						System.exit(1);
					}
				}
			}
			
		}else {
			System.out.println("输入有误，程序结束！");
			System.exit(1);
		}
	}
}
